using System;
using System.Text;
using System.Reflection;
using System.ServiceModel;
using System.Collections.Generic;
using System.Runtime.Serialization;
using TDS = Tridion.ContentManager.Interop.TDS;
using TDSDefines = Tridion.ContentManager.Interop.TDSDefines;



#pragma warning disable 649
namespace Tridion.Gateway
{
	[DataContract]
	public class Schema:Facade
	{
        internal Schema(TDS.Schema Schema, bool ShallowCopy)
            : base(typeof(TDS._Schema), Schema, ShallowCopy)
		{
		}

		[DataMember(Name="ItemType")]
		private TDSDefines.ItemType itemtype;
		public TDSDefines.ItemType ItemType
		{
			 get { return itemtype; }
		}


		[DataMember(Name="ID")]
		private String id;
		public String ID
		{
			 get { return id; }
		}


		[DataMember(Name="Info")]
		private Info info;
		public Info Info
		{
			 get { return info; }
		}


		[DataMember(Name="Title")]
		private String title;
		public String Title
		{
			 get { return title; }
			 set { title = value; }
		}


        //TODO:Fix
        //[DataMember(Name="OrganizationalItem")]
        //private Object organizationalitem;
        //public Object OrganizationalItem
        //{
        //     get { return organizationalitem; }
        //}


		[DataMember(Name="isEditable")]
		private Boolean iseditable;
		public Boolean isEditable
		{
			 get { return iseditable; }
		}


        [DataMember(Name = "Publication")]
        private PublicationURI publication;
        public PublicationURI Publication
        {
            get { return publication; }
        }


		[DataMember(Name="Description")]
		private String description;
		public String Description
		{
			 get { return description; }
			 set { description = value; }
		}


		[DataMember(Name="Purpose")]
		private TDSDefines.EnumSchemaPurposes purpose;
		public TDSDefines.EnumSchemaPurposes Purpose
		{
			 get { return purpose; }
			 set { purpose = value; }
		}


		[DataMember(Name="RootElementName")]
		private String rootelementname;
		public String RootElementName
		{
			 get { return rootelementname; }
			 set { rootelementname = value; }
		}


		[DataMember(Name="NamespaceURI")]
		private String namespaceuri;
		public String NamespaceURI
		{
			 get { return namespaceuri; }
		}


		[DataMember(Name="IsTridionWebSchema")]
		private Boolean istridionwebschema;
		public Boolean IsTridionWebSchema
		{
			 get { return istridionwebschema; }
		}


        //TODO:Fix
        //[DataMember(Name="AllowedMultimediaTypes")]
        //private MultimediaTypes allowedmultimediatypes;
        //public MultimediaTypes AllowedMultimediaTypes
        //{
        //     get { return allowedmultimediatypes; }
        //     set { allowedmultimediatypes = value; }
        //}


		[DataMember(Name="ComponentProcess")]
		private ProcessDefinition componentprocess;
		public ProcessDefinition ComponentProcess
		{
			 get { return componentprocess; }
			 set { componentprocess = value; }
		}


        //TODO:Fix
        //[DataMember(Name="Fields")]
        //private TridionWebSchemaFields fields;
        //public TridionWebSchemaFields Fields
        //{
        //     get { return fields; }
        //}


        //TODO:Fix
        //[DataMember(Name="MetadataFields")]
        //private TridionWebSchemaFields metadatafields;
        //public TridionWebSchemaFields MetadataFields
        //{
        //     get { return metadatafields; }
        //}

        protected override void Initialize(FieldInfo field, PropertyInfo property, Object value)
        {

        }

	}
}

/*
			Tridion.ContentManager.Interop.TDS.ComponentTemplates GetRelatedComponentTemplates()
			System.String GetListAllowedFieldTypes(Boolean)
			System.String GetXML(Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter)
			Void UpdateXML(System.String)
			Boolean Validate(System.String ByRef)
			Void Save(Boolean)
			Void Delete()
			Void Localize()
			Void UnLocalize()
			System.String GetInstanceData(System.Object ByRef, Tridion.ContentManager.Interop.TDSDefines.InstanceDataFilter)
			System.String GetVersionList(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter)
			Void CheckIn(Boolean)
			Void CheckOut(Boolean)
			Void UndoCheckOut(Boolean)
			Void RollBack(Int32, Boolean)
			System.String GetRollBackComment(Int32)
			Void DeleteVersion(Int32)
			System.String GetTridionWebSchemaXML(Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter, Boolean)
*/
